Design Patterns: Elements of Reusable Object-Oriented SoftwareClick Here http://edigibooks.xyz/?book=0201633612